package Top100;

import Algorithm.backtrack.*;
import Algorithm.comprehensive.backpack.Backpack;
import Algorithm.comprehensive.backpack.Backpack_BackTrack;
import Algorithm.comprehensive.optimalSchedule.OptimalSchedule;
import Algorithm.comprehensive.optimalSchedule.OptimalSchedule_BackTrack;
import Algorithm.comprehensive.shortestDeliveryPath.ShortPath;
import Algorithm.comprehensive.shortestDeliveryPath.ShortPath_BackTrack;

/**
 * @author liujun
 * @version 1.0
 * @date 2021/1/15
 * @author—Email ljfirst@mail.ustc.edu.cn
 * @blogURL https://blog.csdn.net/ljfirst
 * @description 回溯专题
 */

public interface BackTrack {

    default void BackTrack() {

        // 背包问题 回溯法
        Backpack bp = new Backpack_BackTrack();

        // 最佳调度问题 （分支限界、剪枝法、回溯法）
        OptimalSchedule os = new OptimalSchedule_BackTrack();

        // 送货最短路径
        ShortPath sp = new ShortPath_BackTrack();

        // 全排列问题
        ArrayPermutation cn = new CombinationNum_BackTrack();                    // 组合数组中的数之和为指定值
        ArrayPermutation app = new ArrayPermutationPlus();                       // 数组的连续积小于给定值的组合(不使用for循环)
        StringCombination sc = new StringCombination();                          // 字符串 全排列
        Combination_Time ct = new Combination_Time();                            // 时间 全排列

        ArrayCombination ac = new ArrayCombination();                            // 数组 全排列【全排列去重问题】【通过访问标记去重】
        ArrayCombination_WithMap acm = new ArrayCombination_WithMap();           // 数组 全排列【全排列去重问题】【通过map去重】
        ArrayCombination_WithMapArray acma = new ArrayCombination_WithMapArray();// 数组 全排列【全排列去重问题】【通过mapArray去重】
        ArrayCombination_SingleLock as = new ArrayCombination_SingleLock();

        // 预测赢家 回溯法
        PredictTheWinner_BackTrack pb = new PredictTheWinner_BackTrack();
    }
}
